#ifndef CONFIGURATIONROOTELEMENT_H_INCLUDED
#define CONFIGURATIONROOTELEMENT_H_INCLUDED

#include "ConfigElement.h"

#define CONFIG_TAG                  "config"

//Attributes of the "config" element
#define CONF_VERSION_ATTRIBUTE  "version"
//#define CONF_CREATED_ATTRIBUTE  "created"

//Tags of the elements children of "config"
#include "VisualizationElement.h"
#include "SimulationElement.h"
#include "InteractionElement.h"


namespace OpenNano
{

   class IOElement;

    class OPENNANO_EXPORT ConfigurationRootElement : public ConfigElement
    {
        DECLARE_OBJECT_FACTORY( ConfigurationRootElement );

        private:
            double _version;
            // _creation;
            VisualizationElement    * _visual;
            SimulationElement       * _sim;
            InteractionElement      * _io;

            bool    _visual_processed,
                    _sim_processed,
                    _io_processed;

        protected:
            void attributeFound(TiXmlAttribute * attribute );
            void childElementFound( TiXmlElement * childElement );
            void textFound(const char * text);
            bool postConfiguration();
            void init();

        public:
            double getVersion();
         /*   VisualizationElement * getVisualizationElement();
            SimulationElement * getSimulationElement();
            InteractionElement * getInteractionElement();*/

    };


}

#endif // CONFIGURATIONROOTELEMENT_H_INCLUDED
